/**
 * 简单的Chart.js替代实现，完全从本地加载，不含任何CDN引用
 * 确保在任何情况下都能提供一个可用的Chart对象
 */
// 立即执行函数，确保Chart对象在全局作用域中可用
(function() {
  // 在全局作用域中创建Chart对象
  window.Chart = window.Chart || {};
  window.Chart.version = '4.4.8';
  
  // Chart构造函数 - 模拟实现基础功能
  window.Chart = function(ctx, config) {
    console.log('使用本地简单Chart替代实现');
    
    // 检查必要参数
    if (!ctx || !config) return;
    
    // 存储配置
    this.ctx = ctx;
    this.config = config;
    
    // 尝试简单渲染图表
    this.render = function() {
      try {
        const canvas = ctx.canvas || ctx;
        const ctx2d = canvas.getContext('2d');
        
        // 设置默认样式
        ctx2d.fillStyle = '#f0f0f0';
        ctx2d.fillRect(0, 0, canvas.width, canvas.height);
        
        // 绘制标题
        ctx2d.fillStyle = '#333';
        ctx2d.font = '16px Arial';
        ctx2d.textAlign = 'center';
        ctx2d.fillText(config.type || 'Chart', canvas.width / 2, 30);
        
        // 绘制简单的数据提示
        if (config.data && config.data.labels && config.data.labels.length > 0) {
          ctx2d.font = '12px Arial';
          ctx2d.fillText(`数据点: ${config.data.labels.length}`, canvas.width / 2, 50);
        }
        
        console.log('图表渲染成功（简单模式）');
      } catch (error) {
        console.error('图表渲染错误:', error);
      }
    };
    
    // 立即渲染
    this.render();
    
    // 返回基本的API方法
    return this;
  };
  
  // 静态方法和属性
  window.Chart.register = function() { console.log('Chart.register called'); };
  window.Chart.unregister = function() { console.log('Chart.unregister called'); };
  window.Chart.defaults = {
    responsive: true,
    maintainAspectRatio: false
  };
  
  // 确保Chart可用
  console.log('Chart.js本地替代实现已加载');
  
  // 确保即使在加载过程中也能访问Chart
  if (typeof window.__chartLoadCallbacks === 'undefined') {
    window.__chartLoadCallbacks = [];
  }
  
  // 执行所有等待的回调
  window.__chartLoadCallbacks.forEach(callback => {
    try {
      callback(window.Chart);
    } catch (error) {
      console.error('Chart回调执行错误:', error);
    }
  });
  
  // 提供一个安全的方式来访问Chart
  window.waitForChart = function(callback) {
    if (typeof window.Chart !== 'undefined') {
      callback(window.Chart);
    } else {
      if (typeof window.__chartLoadCallbacks === 'undefined') {
        window.__chartLoadCallbacks = [];
      }
      window.__chartLoadCallbacks.push(callback);
    }
  };
})();